import request from './request';

// 任务相关API
export default {
  /**
   * 提交风格转换任务
   * @param {Object} data 任务数据
   * @param {String} data.imageUrl 原图URL
   * @param {Array} data.styleIds 风格ID列表
   * @param {Number} data.intensity 风格强度
   * @returns {Promise} 请求Promise
   */
  submitStyleTask(data) {
    // 兼容单图和多图模式
    if (data.imageUrl) {
      // 单图模式
      return request.post('/style-task/create', {
        imageUrl: data.imageUrl,
        styleIds: data.styleIds,
        intensity: data.intensity || 100
      });
    } else if (data.imageUrls) {
      // 多图模式
      return request.post('/style-task/create-batch', {
        imageUrls: data.imageUrls,
        styleIds: data.styleIds,
        intensity: data.intensity || 100
      });
    } else {
      return Promise.reject(new Error('缺少图片URL'));
    }
  },
  
  /**
   * 获取任务状态
   * @param {String} taskId 任务ID
   * @returns {Promise} 请求Promise
   */
  getTaskStatus(taskId) {
    return request.get(`/style-task/status/${taskId}`);
  },
  
  /**
   * 获取任务详情
   * @param {String} taskId 任务ID
   * @returns {Promise} 请求Promise
   */
  getTaskDetail(taskId) {
    return request.get(`/style-task/status/${taskId}`);
  },
  
  /**
   * 获取用户任务列表
   * @param {Object} params 查询参数
   * @param {Number} params.page 页码
   * @param {Number} params.size 每页数量
   * @param {String} params.status 任务状态
   * @returns {Promise} 请求Promise
   */
  getUserTasks(params = {}) {
    return request.get('/style-task/user', params);
  },
  
  /**
   * 取消任务
   * @param {String} taskId 任务ID
   * @returns {Promise} 请求Promise
   */
  cancelTask(taskId) {
    return request.post(`/style-task/cancel/${taskId}`);
  },
  
  /**
   * 删除任务
   * @param {String} taskId 任务ID
   * @returns {Promise} 请求Promise
   */
  deleteTask(taskId) {
    return request.del(`/style-task/${taskId}`);
  },
  
  /**
   * 将任务保存为作品
   * @param {String} taskId 任务ID
   * @param {Object} data 作品数据
   * @param {String} data.title 作品标题
   * @param {String} data.description 作品描述
   * @param {Boolean} data.isPublic 是否公开
   * @returns {Promise} 请求Promise
   */
  saveTaskAsWork(taskId, data) {
    return request.post(`/style-task/save-as-work/${taskId}`, data);
  },
  
  /**
   * 将批量任务保存为专辑
   * @param {String} batchTaskId 批量任务ID
   * @param {Object} data 专辑数据
   * @param {String} data.title 专辑标题
   * @param {String} data.description 专辑描述
   * @param {Boolean} data.isPublic 是否公开
   * @returns {Promise} 请求Promise
   */
  saveBatchTaskAsAlbum(batchTaskId, data) {
    return request.post(`/style-task/save-as-album/${batchTaskId}`, data);
  }
};
